import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class NM {
    //给定一个数组：找出其中数组中中三个数组元素加和为零的这三个元素；
    //要求；返回结果，不能有重复的结果；
    public static List<List<Integer>> fun(int[] array){
        List<List<Integer>> ret=new ArrayList<>();
        Arrays.sort(array);
        int n= array.length;
        for(int i=0;i<n;){
            if(array[i]>0){break;}
            int left=i+1;
            int right=n-1;
            while(left<right){
                    int sum=array[right]+array[left];
                    if(sum<-array[i]){
                        left++;
                    }else if(sum>-array[i]){
                        right--;
                    }else{
                        ret.add(Arrays.asList(array[i],array[left],array[right]));
                        left++;
                        right--;
                        while(left<right&&array[left]==array[left-1]){
                            left++;
                        }
                        while(left<right&&array[right]==array[right+1]){
                            right--;

                    }
                }
            }
            i++;
            while(array[i]==array[i-1]){
                i++;
            }
        }
        return ret;
    }
    public static void main(String[] args){
        List<List<Integer>> ret=new ArrayList<>();
        int[] array={-1,0,1,2,-1,2,-1,-4};
        ret=fun(array);
        System.out.println(Arrays.asList(ret));
    }
}
